package models_main

// 内购支付返回的结构体 https://developer.apple.com/documentation/appstorereceipts/responsebody
type ResponsePay struct {
	Status      int64  `json:"status"`      //具体注释看 config.ResponseStatusMsg
	Environment string `json:"environment"` //（生成收据的环境） 值：Sandbox(沙盒), Production(正式环境)
	Receipt     struct {
		AdamId             int64  `json:"adam_id"`             //见。app_item_id
		AppItemId          int64  `json:"app_item_id"`         // 由 App Store Connect 生成并由 App Store 用于唯一标识所购买的应用程序。仅在生产中为应用分配此标识符。将此值视为 64 位长整数。
		ApplicationVersion string `json:"application_version"` // 应用程序的版本号。应用程序的版本号对应于. 在生产中，此值是设备上基于. 在沙盒中，该值始终为。CFBundleVersionCFBundleShortVersionStringInfo.plistreceipt_creation_date_ms"1.0"
		BundleId           string `json:"bundle_id"`           //收据所属应用的捆绑包标识符
		DownloadId         int64  `json:"download_id"`         //应用下载交易的唯一标识符。
		ExpirationDate     string `json:"expiration_date"`     // 通过批量购买计划购买的应用程序ray1234据到期时间，采用类似于 ISO 8601 的日期时间格式。
		ExpirationDateMs   string `json:"expiration_date_ms"`  // 通过批量购买计划购买的应用程序的收据到期时间，采用 UNIX 纪元时间格式，以毫秒为单位。如果通过批量购买计划购买的应用程序没有此密钥，则收据不会过期。使用此时间格式处理日期。
		ExpirationDatePst  string `json:"expiration_date_pst"` // 通过批量购买计划购买的应用程序在太平洋时区的收据到期时间。
		InApp              []struct {
			CancellationDate      string `json:"cancellation_date"`       // App Store 退还交易或从家庭共享中撤销交易的时间，采用类似于 ISO 8601 的日期时间格式。此字段仅适用于已退款或撤销的交易。
			CancellationDateMs    string `json:"cancellation_date_ms"`    // App Store 退还交易或从家庭共享中撤销交易的时间，采用 UNIX 纪元时间格式，以毫秒为单位。此字段仅适用于退款或撤销的交易。使用此时间格式处理
			CancellationDatePst   string `json:"cancellation_date_pst"`   // App Store 退还交易或从家庭共享中撤销交易的时间，在太平洋时区。此字段仅适用于退款或撤销的交易。
			CancellationReason    string `json:"cancellation_reason"`     // 退款或撤销交易的原因。值“1”表示客户由于您的应用程序中的实际或感知问题而取消了他们的交易。值“0”表示交易因其他原因被取消；例如，如果客户意外购买。  可能的值：1, 0
			ExpiresDate           string `json:"expires_date"`            // 订阅到期时间或续订时间，采用类似于 ISO 8601 的日期时间格式。
			ExpiresDateMs         string `json:"expires_date_ms"`         // 订阅到期或续订的时间，采用 UNIX 纪元时间格式，以毫秒为单位。使用此时间格式处理日期
			ExpiresDatePst        string `json:"expires_date_pst"`        // 太平洋时区的订阅到期时间或续订时间。
			OriginalTransactionId string `json:"original_transaction_id"` // 原始购买的交易标识符。
			ProductId             string `json:"product_id"`              // 购买的产品的唯一标识符。您在 App Store Connect 中创建产品时提供此值，它对应于存储在交易的支付属性中的对象的属性
			PromotionalOfferId    string `json:"promotional_offer_id"`    // 用户兑换的订阅优惠的标识符
			Quantity              string `json:"quantity"`                // 购买的消耗品数量。此值对应于SKPayment存储在交易的支付属性中的对象的数量属性。“1”除非使用可变付款进行修改，否则该值通常是不变的。最大值为 10。
			TransactionId         string `json:"transaction_id"`          // 交易的唯一标识符，例如购买、恢复或续订
			WebOrderLineItemId    string `json:"web_order_line_item_id"`  // 跨设备购买事件的唯一标识符，包括订阅续订事件。该值是识别订阅购买的主键。
		} `json:"in_app"` //包含所有应用内购买交易的应用内购买收据字段的数组
	} `json:"receipt"` //发送以供验证的收据的 JSON 表示形式。
	OriginalPurchaseDate      string `json:"original_purchase_date"`      // 原始应用购买的时间，采用类似于 ISO 8601 的日期时间格式。
	OriginalPurchaseDateMs    string `json:"original_purchase_date_ms"`   // 原始应用购买的时间，采用 UNIX 纪元时间格式，以毫秒为单位。使用此时间格式处理日期。
	OriginalPurchaseDatePst   string `json:"original_purchase_date_pst"`  // 原始应用购买时间，太平洋时区。
	PreorderDate              string `json:"preorder_date"`               // 用户订购可预购应用的时间，采用类似于 ISO 8601 的日期时间格式。
	PreorderDateMs            string `json:"preorder_date_ms"`            // 用户订购可用于预订的应用程序的时间，采用 UNIX 纪元时间格式，以毫秒为单位。此字段仅在用户预购应用程序时出现。使用此时间格式处理日期。
	PreorderDatePst           string `json:"preorder_date_pst"`           // 用户在太平洋时区订购可供预订的应用程序的时间。
	ReceiptCreationDate       string `json:"receipt_creation_date"`       // App Store 生成收据的时间，采用类似于 ISO 8601 的日期时间格式。
	ReceiptCreationDateMs     string `json:"receipt_creation_date_ms"`    // App Store 生成收据的时间，采用 UNIX 纪元时间格式，以毫秒为单位。使用此时间格式处理日期。这个值不会改变。
	ReceiptCreationDatePst    string `json:"receipt_creation_date_pst"`   // App Store 生成收据的时间，在太平洋时区。
	ReceiptType               string `json:"receipt_type"`                // 生成的收据类型。该值对应于进行应用程序或 VPP 购买的环境。可能的值：Production, ProductionVPP, ProductionSandbox, ProductionVPPSandbox
	RequestDate               string `json:"request_date"`                // 处理对端点的请求并生成响应的时间，采用类似于 ISO 8601 的日期时间格式。verifyReceipt
	RequestDateMs             string `json:"request_date_ms"`             // 处理对端点的请求并生成响应的时间，采用 UNIX 纪元时间格式，以毫秒为单位。使用此时间格式处理日期。verifyReceipt
	RequestDatePst            string `json:"request_date_pst"`            // 在太平洋时区处理对端点的请求并生成响应的时间。verifyReceipt
	VersionExternalIdentifier string `json:"version_external_identifier"` // 一个任意数字，用于标识您的应用程序的修订版。在沙箱中，此键的值为“0”。
}
